package handler;

import pojo.InventoryInfo;
import pojo.Transaction;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * 文件处理类：负责读取库存信息文件和事务信息文件，将数据解析并存储到对应的对象列表中。
 */
public class FileHandler {

    /**
     * 读取库存信息文件 (inventory_info.txt) 并将数据存储到列表中。
     *
     * @param fileName 文件所在目录路径
     * @return 返回存储了库存信息对象的列表
     */
    public static List<InventoryInfo> inventoryFileHandler(String fileName) {
        List<InventoryInfo> inventoryList = new ArrayList<>();
        try (BufferedReader br = new BufferedReader(new FileReader(fileName + "/inventory_info.txt"))) {
            String line;
            while ((line = br.readLine()) != null) {
                String[] fields = line.split(","); // 假设文件为逗号分隔格式
                InventoryInfo inventory = new InventoryInfo(
                        fields[0], // 零件编号
                        fields[1], // 零件名称
                        Integer.parseInt(fields[2]), // 库存数量
                        Integer.parseInt(fields[3])  // 库存临界值
                );
                inventoryList.add(inventory);
            }
        } catch (IOException e) {
            System.out.println("读取库存信息文件时发生错误：" + e.getMessage());
        }
        return inventoryList;
    }

    /**
     * 读取事务信息文件 (transaction.txt) 并将数据存储到列表中。
     *
     * @param fileName 文件所在目录路径
     * @return 返回存储了事务信息对象的列表
     */
    public static List<Transaction> transactionFileHandler(String fileName) {
        List<Transaction> transactionList = new ArrayList<>();
        // 输出当前工作路径（调试用）
        // System.out.println(System.getProperty("user.dir"));
        try (BufferedReader br = new BufferedReader(new FileReader(fileName + "/transaction.txt"))) {
            String line;
            while ((line = br.readLine()) != null) {
                String[] fields = line.split(","); // 假设文件为逗号分隔格式
                Transaction transaction = new Transaction(
                        fields[0], // 事务编号
                        fields[1], // 零件编号
                        fields[2], // 事务类型（入库/出库）
                        Integer.parseInt(fields[3]), // 数量
                        Boolean.parseBoolean(fields[4]) // 是否已更新
                );
                transactionList.add(transaction);
            }
        } catch (IOException e) {
            System.out.println("读取事务信息文件时发生错误：" + e.getMessage());
        }
        return transactionList;
    }
}
